<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    /*
      1. 
      问题：给定一个用户对象数组。请完成以下操作：
      筛选出所有年龄大于等于18岁的用户。
      将这些用户的名字（firstName 和 lastName）合并成一个全名（fullName）。
      将所有全名转换为大写。
      最后返回一个包含这些大写全名的数组。

      // 期望输出:
      // [ 'JOHN DOE', 'PETER JONES', 'CHRIS GREEN' ]
    */ 
    const users = [
      { firstName: 'John', lastName: 'Doe', age: 25 },
      { firstName: 'Jane', lastName: 'Smith', age: 17 },
      { firstName: 'Peter', lastName: 'Jones', age: 32 },
      { firstName: 'Anna', lastName: 'Lee', age: 16 },
      { firstName: 'Chris', lastName: 'Green', age: 18 }
    ];
    function getFullName(users) {
      // const filterUsrs = users.filter((item) => item.age >= 18);
      return users.filter((item) => item.age >= 18)
        .map(item => {
          return `${item.firstName.toUpperCase()} ${item.lastName.toUpperCase()}`
        })
    }
    console.log(getFullName(users))
    



    /*
      2. 
      问题：给定一个商品数组，每个商品都有一个数量（count）和价格（price）。请计算所有的商品总价。
      要求：得到价格总和
      5080
    */
    const products = [
      { name: 'Laptop', count: 3, price: 1200 },
      { name: 'T-shirt', count: 4, price: 20 },
      { name: 'Keyboard', count: 6, price: 75 },
      { name: 'Jeans', count: 1, price: 50 },
      { name: 'Monitor', count: 3, price: 300 }
    ];

    function getTotalPrice(products) {
      return products.reduce((sum, item) => {
        return sum += item.count * item.price
      }, 0)
    }
    console.log(getTotalPrice(products))



    /*
      3. 
      问题：给定一个学生分数对象数组。请计算出所有分数在80分及以上的学生的平均分。
      期望输出: (85 + 92 + 88) / 3 = 88.33
    */
    const students = [
      { name: 'Alice', score: 85 },
      { name: 'Bob', score: 92 },
      { name: 'Charlie', score: 76 },
      { name: 'David', score: 88 },
      { name: 'Eve', score: 79 }
    ];
    function getAverage(students) {
      const students2 = students.filter(item => item.score >= 80);
      return students2.reduce((sum, item) => {
        return sum += item.score / students2.length
      }, 0)
      // return total / students2.length
    }
    console.log(getAverage(students))


    /*
      4. 
      问题：你有一个用户列表，每个用户是一个包含 id、name 和 email 的对象。你的任务是：
      根据指定的 id 找到对应的用户对象。
      如果找到了该用户，返回一个格式为 "用户名 (邮箱地址)" 的字符串。
      如果没有找到，返回 "User not found"。
    */ 
    const users2 = [
      { id: 101, name: 'Alice', email: 'alice@example.com' },
      { id: 102, name: 'Bob', email: 'bob@example.com' },
      { id: 103, name: 'Charlie', email: 'charlie@example.com' },
    ];
    function fn(id) {
      // const user = users2.find(item => item.id === id);

      // 简单的if，可以直接使用短路运算
      // 简单的if和else，可以直接使用三目运算
      // return user ? user.email : "User not found";


       return users2.find(user => user.id === id)?.email || "User not found"
    }
    console.log(fn(101)) // 'alice@example.com'
    console.log(fn(102)) // 'bob@example.com'
    console.log(fn(104)) // "User not found"
  </script>
</body>
</html>